/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package modelo;

import java.io.Serializable;
import javax.persistence.*;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import javax.xml.bind.annotation.XmlRootElement;

/**
 *
 * @author Andre
 */
@Entity
@Table(name = "itensFicha")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "ItensFicha.findAll", query = "SELECT i FROM ItensFicha i"),
    @NamedQuery(name = "ItensFicha.findByIdFicha", query = "SELECT i FROM ItensFicha i WHERE i.itensFichaPK.idFicha = :idFicha"),
    @NamedQuery(name = "ItensFicha.findByIdExercicio", query = "SELECT i FROM ItensFicha i WHERE i.itensFichaPK.idExercicio = :idExercicio"),
    @NamedQuery(name = "ItensFicha.findBySeries", query = "SELECT i FROM ItensFicha i WHERE i.series = :series"),
    @NamedQuery(name = "ItensFicha.findByRepeticoes", query = "SELECT i FROM ItensFicha i WHERE i.repeticoes = :repeticoes"),
    @NamedQuery(name = "ItensFicha.findByTempo", query = "SELECT i FROM ItensFicha i WHERE i.tempo = :tempo"),
    @NamedQuery(name = "ItensFicha.findByPeso", query = "SELECT i FROM ItensFicha i WHERE i.peso = :peso")})
public class ItensFicha implements Serializable {
    
    private static final long serialVersionUID = 1L;
    
    @EmbeddedId
    private ItensFichaPK itensFichaPK;
    
    @Basic(optional = false)
    @NotNull
    @Column(name = "series")
    private int series;
    
    @Basic(optional = false)
    @NotNull
    @Column(name = "repeticoes")
    private int repeticoes;
    
    @Basic(optional = false)
    @NotNull
    @Column(name = "tempo")
    private int tempo;
    
    @Basic(optional = false)
    @NotNull
    @Column(name = "peso")
    private double peso;
    
    @Basic(optional = false)
    @NotNull
    @Lob
    @Size(min = 1, max = 65535)
    @Column(name = "observacao")
    private String observacao;
    
    @JoinColumn(name = "idExercicio", referencedColumnName = "idExercicio", insertable = false, updatable = false)
    @ManyToOne(optional = false)
    private Exercicio exercicio;
    
    @JoinColumn(name = "idFicha", referencedColumnName = "idFicha", insertable = false, updatable = false)
    @ManyToOne(optional = false)
    private Ficha ficha;

    public ItensFicha() {
    }

    public ItensFicha(ItensFichaPK itensFichaPK) {
        this.itensFichaPK = itensFichaPK;
    }

    public ItensFicha(ItensFichaPK itensFichaPK, int series, int repeticoes, int tempo, double peso, String observacao) {
        this.itensFichaPK = itensFichaPK;
        this.series = series;
        this.repeticoes = repeticoes;
        this.tempo = tempo;
        this.peso = peso;
        this.observacao = observacao;
    }

    public ItensFicha(int idFicha, int idExercicio) {
        this.itensFichaPK = new ItensFichaPK(idFicha, idExercicio);
    }

    public ItensFichaPK getItensFichaPK() {
        return itensFichaPK;
    }

    public int getSeries() {
        return series;
    }

    public void setSeries(int series) {
        this.series = series;
    }

    public int getRepeticoes() {
        return repeticoes;
    }

    public void setRepeticoes(int repeticoes) {
        this.repeticoes = repeticoes;
    }

    public int getTempo() {
        return tempo;
    }

    public void setTempo(int tempo) {
        this.tempo = tempo;
    }

    public double getPeso() {
        return peso;
    }

    public void setPeso(double peso) {
        this.peso = peso;
    }

    public String getObservacao() {
        return observacao;
    }

    public void setObservacao(String observacao) {
        this.observacao = observacao;
    }

    public Exercicio getExercicio() {
        return exercicio;
    }

    public void setExercicio(Exercicio exercicio) {
        this.exercicio = exercicio;
    }

    public Ficha getFicha() {
        return ficha;
    }

    public void setFicha(Ficha ficha) {
        this.ficha = ficha;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (getItensFichaPK() != null ? getItensFichaPK().hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof ItensFicha)) {
            return false;
        }
        ItensFicha other = (ItensFicha) object;
        if ((this.getItensFichaPK() == null && other.getItensFichaPK() != null) || (this.getItensFichaPK() != null && !this.itensFichaPK.equals(other.itensFichaPK))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "modelo.Itensficha[ itensFichaPK=" + getItensFichaPK() + " ]";
    }

    /**
     * @param itensFichaPK the itensFichaPK to set
     */
    public void setItensFichaPK(ItensFichaPK itensFichaPK) {
        this.itensFichaPK = itensFichaPK;
    }
    
}
